package com.nlgc365.designpattern.Chapter04_Pattern.Behavior.P01_Observer.SynchronousObserver;

import java.util.ArrayList;
import java.util.List;

/**
 * 观察者模式的作用: 解耦不同行为, 观察者与被观察者, 使被观察者更具有可扩展性
 * 该类作用: 被观察者, 主动发起行为
 */
public class SomeController {
    // 属性: 观察者集合
    private List<IObserver> observers = new ArrayList<>();

    // 添加观察者
    public void setObservers(List<IObserver> observers) {
        this.observers.addAll(observers);
    }

    // 删除观察者
    public void removeObserver(IObserver observer) {
        observers.remove(observer);
    }

    // 业务: 具体业务
    public String register() {
        for (IObserver observer : this.observers) {
            observer.update(new Message("新注册用户"));
        }
        return "";
    }
}
